home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Interactive 7
/
PC World Interactive 7.iso
/
program
/
pasprog.EXE
/
KALIN-IS.TXT
< prev
next >
Wrap
Text File
|
1980-01-10
|
4KB
|
65 lines
┌──────────────────────────────────────────────────────────────────────────┐
│┌────────────────────────────────────────────────────────────────────────┐│
││ ││
││ KALIN ÿ₧LER... ││
││ ││
│└────────────────────────────────────────────────────────────────────────┘│
│ PS 31 · ₧ubat'96 Tunç Sabuncu │
└──────────────────────────────────────────────────────────────────────────┘
Bir süredir bu sayfalarda "ince iƒler" baƒlìºì altìnda veri yapìlarìndan söz
ediyoruz. Veri yapìlarì kadar önemli olan bir diºer konu da sayìsal
analizdir. ÿçinden çìkìlmaz gibi görünen denklemleri bilgisayarla kolayca
çözebilirsiniz. Özellikle virgülden sonraki sayìlarìn da önemli olduºu
hesaplamalarda bilgisayarlarìn insan beynine açìk bir üstünlüºü vardìr. Bu
iddiaya bozulan varsa aƒaºìdaki denklem sistemine bir göz atabilir:
77.43*X1 + 45.33*X2 + 89.65*X3 = 77.56
56.12*X1 + 90.02*X2 + 12.34*X3 = 55.55
99.01*X1 + 44.99*X2 + 60.11*X3 = 65.22
Aslìnda bu tür denklem sistemlerinin çözümü üniversitelerde lineer cebir
derslerinde öºretilir. Katsayìlarì bir matris oluƒturacak ƒekilde yazìp
satìr iƒlemleri ile ana çapraz ( köƒegen üzerindeki elemanlar ) altìnda
kalan elemanlar sìfìrlanìr ve X'ler bir bir hesaplanìr. Ama yukarìdaki gibi
bir soruyu soracak kadar insafsìz bir lineer cebir hocasì her halde ÿTÜ'de
bile yoktur. Neyse, dedikoduyu bir yana bìrakalìm da programdan söz edelim.
Bu ayki programìmìz yukarìdaki gibi üç bilinmeyenli üç denklemden oluƒan
sistemleri çözen bir sayìsal analiz uygulamasì. Siz yanlìzca katsayìlarì ve
eƒitliºin karƒìsìndaki deºeri veriyorsunuz, gerisi ona kalmìƒ. Programìmìz
yaptìºì satìr iƒlemleri konusunda kullanìcìyì aydìnlatìrken matrisin her bir
evredeki halini de ekrana getirerek adeta bir BDE (!) uygulamasì gibi
çalìƒìyor.
Nasìl Çalìƒìr?
Çok fazla gerekmemekle birlikte kod gene de modüler yazìldì. Bunlardan
'matris_al' altyordamì denklem sisteminin katsayìlarìnì matris ƒeklinde
alìrken 'matris_yaz' da a[i,j] matrisini satìr satìr yazìyor. ( Konuya yeni
ìsìnan arkadaƒlar bu altyordamlarì kendi matris programlarìnda
kullanabilirler.) Esas önemli olan altyordamlar 'birinci' ve 'ikinci'.
Birinci adlì yordam çaºìrìldìºìnda ikinci ve üçüncü satìrlarìn ilk
elemanlarìnì birinci satìrdan yararlanarak sìfìra eƒitliyor. ÿkinci ise
ikinci satìrìn ikinci elemanìnì kullanarak üçüncü satìrìn ikinci elemanìnì
sìfìra eƒitliyor. Bu iƒlemlerin sonunda üç bilinmeyenli üç denklem yerine
bir, iki ve üç bilinmeyenli üç denklem ortaya çìkìyor. ÿƒin geri kalan kìsmì
margarinden saç çekmek kadar kolay.
Yazìlìm Ergonomisi üzerine birkaç lakìrdì...
Programìn kodu içinde akìƒ üzerine hiçbir etkisi olmayan writeln'ler
göreceksiniz. Bunlar olmadan program bazì sayìlar alan ve bazì sayìlar veren
bir kara kutu olurdu. Oysa bu basit komutlar sayesinde matris üzerinde
yapìlan satìr iƒlemleri bir bir anlatìlìyor ve bunlarìn etkisi adìm adìm
gösteriliyor. Programìn sonlarìna doºru ise hangi X deºerinin nereden
geldiºini belli etmek için "...'yì ƒurada yerine koyarsak" gibi ifadelerle
kullanìcì aydìnlatìlìyor. Aslìnda ergonomik program yazmak çoºu zaman bu
kadar basit. Örneºin kullanìcìdan bir girdi istendiºi zaman bunun ne
olduºunu, nerede nasìl kullanìlacaºìnì açìklayan ve bu sayede kolay
kullanìlan ve hìzla öºrenilen programlar yazmak hiç zor deºil. Bu kodu hem
'kalìn iƒler' gözüyle hem de yazìlìm ergonomisi gözüyle inceleyin. Hepinize
sayìsal analizli günler...